<?php

namespace app\common\model;

use think\Request;
use think\Model;
use think\Db;

class AppletPage extends Model
{

    // 开启自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';

    /**
     * 格式化页面数据（读取的时候对数据转换）
     */
    public function getPageDataAttr($json)
    {
        $array = json_decode($json, true);
        return compact('array', 'json');
    }


    /**
     * 自动转换data为json格式(修改器，保存de时候操作)
     */
    public function setPageDataAttr($value)
    {
        return json_encode($value ?: ['items' => []]);
    }
    
    /**
     * 获取页面列表
     */
    public function getList()
    {
        // 排序规则
        $sort = [];
        $sort = ['id' => 'desc'];
        // 执行查询
        $list = $this->order($sort)
            ->paginate(15, false, [
                'query' => Request::instance()->request()
            ]);
        return $list;
    }
    /**
     * diy页面详情
     */
    public static function getHome($formwork_order_id='')
    {
        // 筛选条件
        $filter['is_home'] = 1;
        !empty($formwork_order_id) && $filter['formwork_order_id'] = $formwork_order_id;
        return self::get(['is_home' =>1]);
    }

     /**
     * 更新页面数据
     */
    public function edit($page_data)
    {
        for($n=0;$n<sizeof($page_data['items']);$n++){
            if($page_data['items'][$n]['type'] == 'richText'){
                $page_data['items'][$n]['params']['content'] = htmlspecialchars_decode($page_data['items'][$n]['params']['content']);
            }
        }
        return $this->save(compact('page_data')) !== false;
    }
    
    /**
     * 添加
     */
    public function add(array $page_data,$formwork_order_id)
    {
        for($n=0;$n<sizeof($page_data['items']);$n++){
            if($page_data['items'][$n]['type'] == 'richText'){
                $page_data['items'][$n]['params']['content'] = htmlspecialchars_decode($page_data['items'][$n]['params']['content']);
            }
        }
        $data['page_data'] = $page_data;
        $data['formwork_order_id'] = $formwork_order_id;
        return $this->allowField(true)->save($data) !== false;
    }

    /**
     * 删除
     */
    public function remove()
    {
        return $this->delete() !== false;
    }
    
    /**
     * 设置默认首页
     */
    public function sethome($id)
    {
         // 开启事务处理
        Db::startTrans();
        try {
            //取消原来的默认首页
            $this->where('is_home',1)->update(['is_home' => 0]);
            //设置新首页
            $this->where('id',$id)->update(['is_home' => 1]);
            // 事务提交
            Db::commit();
            return true;
        } catch (\Exception $e) {
            $this->error = $e->getMessage();
            Db::rollback();
            return false;
        }
    }
}
